package com.oracle.sbdb.util;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class StopsUtils {
	private static final Set<String> dict = loadDict();
	public static boolean contains(String word){
		return dict.contains(word);
	}
	public static List<String> filterSentence(String sentence){
		List<String> res = null;
		
		if(sentence == null){
			return res;
		}
		
		String[] array = sentence.split(" ");
		if(array == null || array.length == 0){
			return res;
		}
		
		for(String word : array){
			word = word.trim().toLowerCase();
			
			if(word.length() == 0){
				continue;
			}
			
			if(contains(word)){
				continue;
			}
			
			if(res == null){
				res = new ArrayList<String>();
			}
			
			res.add(word);
		}
		
		return res;
	}
	private static Set<String> loadDict() {
		Set<String> res = new HashSet<String>();
		res.add("a");
		res.add("a's");
		res.add("able");
		res.add("about");
		res.add("above");
		res.add("abst");
		res.add("accordance");
		res.add("according");
		res.add("accordingly");
		res.add("across");
		res.add("act");
		res.add("actually");
		res.add("added");
		res.add("adj");
		res.add("adopted");
		res.add("affected");
		res.add("affecting");
		res.add("affects");
		res.add("after");
		res.add("afterwards");
		res.add("again");
		res.add("against");
		res.add("ah");
		res.add("ain't");
		res.add("all");
		res.add("allow");
		res.add("allows");
		res.add("almost");
		res.add("alone");
		res.add("along");
		res.add("already");
		res.add("also");
		res.add("although");
		res.add("always");
		res.add("am");
		res.add("among");
		res.add("amongst");
		res.add("an");
		res.add("and");
		res.add("announce");
		res.add("another");
		res.add("any");
		res.add("anybody");
		res.add("anyhow");
		res.add("anymore");
		res.add("anyone");
		res.add("anything");
		res.add("anyway");
		res.add("anyways");
		res.add("anywhere");
		res.add("apart");
		res.add("apparently");
		res.add("appear");
		res.add("appreciate");
		res.add("appropriate");
		res.add("approximately");
		res.add("are");
		res.add("area");
		res.add("areas");
		res.add("aren");
		res.add("aren't");
		res.add("arent");
		res.add("arise");
		res.add("around");
		res.add("as");
		res.add("aside");
		res.add("ask");
		res.add("asked");
		res.add("asking");
		res.add("asks");
		res.add("associated");
		res.add("at");
		res.add("auth");
		res.add("available");
		res.add("away");
		res.add("awfully");
		res.add("b");
		res.add("back");
		res.add("backed");
		res.add("backing");
		res.add("backs");
		res.add("be");
		res.add("became");
		res.add("because");
		res.add("become");
		res.add("becomes");
		res.add("becoming");
		res.add("been");
		res.add("before");
		res.add("beforehand");
		res.add("began");
		res.add("begin");
		res.add("beginning");
		res.add("beginnings");
		res.add("begins");
		res.add("behind");
		res.add("being");
		res.add("beings");
		res.add("believe");
		res.add("below");
		res.add("beside");
		res.add("besides");
		res.add("best");
		res.add("better");
		res.add("between");
		res.add("beyond");
		res.add("big");
		res.add("biol");
		res.add("both");
		res.add("brief");
		res.add("briefly");
		res.add("but");
		res.add("by");
		res.add("c");
		res.add("c'mon");
		res.add("c's");
		res.add("ca");
		res.add("came");
		res.add("can");
		res.add("can't");
		res.add("cannot");
		res.add("cant");
		res.add("case");
		res.add("cases");
		res.add("cause");
		res.add("causes");
		res.add("certain");
		res.add("certainly");
		res.add("changes");
		res.add("clear");
		res.add("clearly");
		res.add("co");
		res.add("com");
		res.add("come");
		res.add("comes");
		res.add("concerning");
		res.add("consequently");
		res.add("consider");
		res.add("considering");
		res.add("contain");
		res.add("containing");
		res.add("contains");
		res.add("corresponding");
		res.add("could");
		res.add("couldn't");
		res.add("couldnt");
		res.add("course");
		res.add("currently");
		res.add("d");
		res.add("date");
		res.add("definitely");
		res.add("describe");
		res.add("described");
		res.add("despite");
		res.add("did");
		res.add("didn't");
		res.add("differ");
		res.add("different");
		res.add("differently");
		res.add("discuss");
		res.add("do");
		res.add("does");
		res.add("doesn't");
		res.add("doing");
		res.add("don't");
		res.add("done");
		res.add("down");
		res.add("downed");
		res.add("downing");
		res.add("downs");
		res.add("downwards");
		res.add("due");
		res.add("during");
		res.add("e");
		res.add("each");
		res.add("early");
		res.add("ed");
		res.add("edu");
		res.add("effect");
		res.add("eg");
		res.add("eight");
		res.add("eighty");
		res.add("either");
		res.add("else");
		res.add("elsewhere");
		res.add("end");
		res.add("ended");
		res.add("ending");
		res.add("ends");
		res.add("enough");
		res.add("entirely");
		res.add("especially");
		res.add("et");
		res.add("et-al");
		res.add("etc");
		res.add("even");
		res.add("evenly");
		res.add("ever");
		res.add("every");
		res.add("everybody");
		res.add("everyone");
		res.add("everything");
		res.add("everywhere");
		res.add("ex");
		res.add("exactly");
		res.add("example");
		res.add("except");
		res.add("f");
		res.add("face");
		res.add("faces");
		res.add("fact");
		res.add("facts");
		res.add("far");
		res.add("felt");
		res.add("few");
		res.add("ff");
		res.add("fifth");
		res.add("find");
		res.add("finds");
		res.add("first");
		res.add("five");
		res.add("fix");
		res.add("followed");
		res.add("following");
		res.add("follows");
		res.add("for");
		res.add("former");
		res.add("formerly");
		res.add("forth");
		res.add("found");
		res.add("four");
		res.add("from");
		res.add("full");
		res.add("fully");
		res.add("further");
		res.add("furthered");
		res.add("furthering");
		res.add("furthermore");
		res.add("furthers");
		res.add("g");
		res.add("gave");
		res.add("general");
		res.add("generally");
		res.add("get");
		res.add("gets");
		res.add("getting");
		res.add("give");
		res.add("given");
		res.add("gives");
		res.add("giving");
		res.add("go");
		res.add("goes");
		res.add("going");
		res.add("gone");
		res.add("good");
		res.add("goods");
		res.add("got");
		res.add("gotten");
		res.add("great");
		res.add("greater");
		res.add("greatest");
		res.add("greetings");
		res.add("group");
		res.add("grouped");
		res.add("grouping");
		res.add("groups");
		res.add("h");
		res.add("had");
		res.add("hadn't");
		res.add("happens");
		res.add("hardly");
		res.add("has");
		res.add("hasn't");
		res.add("have");
		res.add("haven't");
		res.add("having");
		res.add("he");
		res.add("he's");
		res.add("hed");
		res.add("hello");
		res.add("help");
		res.add("hence");
		res.add("her");
		res.add("here");
		res.add("here's");
		res.add("hereafter");
		res.add("hereby");
		res.add("herein");
		res.add("heres");
		res.add("hereupon");
		res.add("hers");
		res.add("herself");
		res.add("hes");
		res.add("hi");
		res.add("hid");
		res.add("high");
		res.add("higher");
		res.add("highest");
		res.add("him");
		res.add("himself");
		res.add("his");
		res.add("hither");
		res.add("home");
		res.add("hopefully");
		res.add("how");
		res.add("howbeit");
		res.add("however");
		res.add("hundred");
		res.add("i");
		res.add("i'd");
		res.add("i'll");
		res.add("i'm");
		res.add("i've");
		res.add("id");
		res.add("ie");
		res.add("if");
		res.add("ignored");
		res.add("im");
		res.add("immediate");
		res.add("immediately");
		res.add("importance");
		res.add("important");
		res.add("in");
		res.add("inasmuch");
		res.add("inc");
		res.add("include");
		res.add("indeed");
		res.add("index");
		res.add("indicate");
		res.add("indicated");
		res.add("indicates");
		res.add("information");
		res.add("inner");
		res.add("insofar");
		res.add("instead");
		res.add("interest");
		res.add("interested");
		res.add("interesting");
		res.add("interests");
		res.add("into");
		res.add("invention");
		res.add("inward");
		res.add("is");
		res.add("isn't");
		res.add("it");
		res.add("it'd");
		res.add("it'll");
		res.add("it's");
		res.add("itd");
		res.add("its");
		res.add("itself");
		res.add("j");
		res.add("just");
		res.add("k");
		res.add("keep");
		res.add("keeps");
		res.add("kept");
		res.add("keys");
		res.add("kg");
		res.add("kind");
		res.add("km");
		res.add("knew");
		res.add("know");
		res.add("known");
		res.add("knows");
		res.add("l");
		res.add("large");
		res.add("largely");
		res.add("last");
		res.add("lately");
		res.add("later");
		res.add("latest");
		res.add("latter");
		res.add("latterly");
		res.add("least");
		res.add("less");
		res.add("lest");
		res.add("let");
		res.add("let's");
		res.add("lets");
		res.add("like");
		res.add("liked");
		res.add("likely");
		res.add("line");
		res.add("little");
		res.add("long");
		res.add("longer");
		res.add("longest");
		res.add("look");
		res.add("looking");
		res.add("looks");
		res.add("ltd");
		res.add("m");
		res.add("made");
		res.add("mainly");
		res.add("make");
		res.add("makes");
		res.add("making");
		res.add("man");
		res.add("many");
		res.add("may");
		res.add("maybe");
		res.add("me");
		res.add("mean");
		res.add("means");
		res.add("meantime");
		res.add("meanwhile");
		res.add("member");
		res.add("members");
		res.add("men");
		res.add("merely");
		res.add("mg");
		res.add("might");
		res.add("million");
		res.add("miss");
		res.add("ml");
		res.add("more");
		res.add("moreover");
		res.add("most");
		res.add("mostly");
		res.add("mr");
		res.add("mrs");
		res.add("much");
		res.add("mug");
		res.add("must");
		res.add("my");
		res.add("myself");
		res.add("n");
		res.add("n't");
		res.add("na");
		res.add("name");
		res.add("namely");
		res.add("nay");
		res.add("nd");
		res.add("near");
		res.add("nearly");
		res.add("necessarily");
		res.add("necessary");
		res.add("need");
		res.add("needed");
		res.add("needing");
		res.add("needs");
		res.add("neither");
		res.add("never");
		res.add("nevertheless");
		res.add("new");
		res.add("newer");
		res.add("newest");
		res.add("next");
		res.add("nine");
		res.add("ninety");
		res.add("no");
		res.add("nobody");
		res.add("non");
		res.add("none");
		res.add("nonetheless");
		res.add("noone");
		res.add("nor");
		res.add("normally");
		res.add("nos");
		res.add("not");
		res.add("noted");
		res.add("nothing");
		res.add("novel");
		res.add("now");
		res.add("nowhere");
		res.add("number");
		res.add("numbers");
		res.add("o");
		res.add("obtain");
		res.add("obtained");
		res.add("obviously");
		res.add("of");
		res.add("off");
		res.add("often");
		res.add("oh");
		res.add("ok");
		res.add("okay");
		res.add("old");
		res.add("older");
		res.add("oldest");
		res.add("omitted");
		res.add("on");
		res.add("once");
		res.add("one");
		res.add("ones");
		res.add("only");
		res.add("onto");
		res.add("open");
		res.add("opened");
		res.add("opening");
		res.add("opens");
		res.add("or");
		res.add("ord");
		res.add("order");
		res.add("ordered");
		res.add("ordering");
		res.add("orders");
		res.add("other");
		res.add("others");
		res.add("otherwise");
		res.add("ought");
		res.add("our");
		res.add("ours");
		res.add("ourselves");
		res.add("out");
		res.add("outside");
		res.add("over");
		res.add("overall");
		res.add("owing");
		res.add("own");
		res.add("p");
		res.add("page");
		res.add("pages");
		res.add("part");
		res.add("parted");
		res.add("particular");
		res.add("particularly");
		res.add("parting");
		res.add("parts");
		res.add("past");
		res.add("per");
		res.add("perhaps");
		res.add("place");
		res.add("placed");
		res.add("places");
		res.add("please");
		res.add("plus");
		res.add("point");
		res.add("pointed");
		res.add("pointing");
		res.add("points");
		res.add("poorly");
		res.add("possible");
		res.add("possibly");
		res.add("potentially");
		res.add("pp");
		res.add("predominantly");
		res.add("present");
		res.add("presented");
		res.add("presenting");
		res.add("presents");
		res.add("presumably");
		res.add("previously");
		res.add("primarily");
		res.add("probably");
		res.add("problem");
		res.add("problems");
		res.add("promptly");
		res.add("proud");
		res.add("provides");
		res.add("put");
		res.add("puts");
		res.add("q");
		res.add("que");
		res.add("quickly");
		res.add("quite");
		res.add("qv");
		res.add("r");
		res.add("ran");
		res.add("rather");
		res.add("rd");
		res.add("re");
		res.add("readily");
		res.add("really");
		res.add("reasonably");
		res.add("recent");
		res.add("recently");
		res.add("ref");
		res.add("refs");
		res.add("regarding");
		res.add("regardless");
		res.add("regards");
		res.add("related");
		res.add("relatively");
		res.add("research");
		res.add("respectively");
		res.add("resulted");
		res.add("resulting");
		res.add("results");
		res.add("right");
		res.add("room");
		res.add("rooms");
		res.add("run");
		res.add("s");
		res.add("said");
		res.add("same");
		res.add("saw");
		res.add("say");
		res.add("saying");
		res.add("says");
		res.add("sec");
		res.add("second");
		res.add("secondly");
		res.add("seconds");
		res.add("section");
		res.add("see");
		res.add("seeing");
		res.add("seem");
		res.add("seemed");
		res.add("seeming");
		res.add("seems");
		res.add("seen");
		res.add("sees");
		res.add("self");
		res.add("selves");
		res.add("sensible");
		res.add("sent");
		res.add("serious");
		res.add("seriously");
		res.add("seven");
		res.add("several");
		res.add("shall");
		res.add("she");
		res.add("she'll");
		res.add("shed");
		res.add("shes");
		res.add("should");
		res.add("shouldn't");
		res.add("show");
		res.add("showed");
		res.add("showing");
		res.add("shown");
		res.add("showns");
		res.add("shows");
		res.add("side");
		res.add("sides");
		res.add("significant");
		res.add("significantly");
		res.add("similar");
		res.add("similarly");
		res.add("since");
		res.add("six");
		res.add("slightly");
		res.add("small");
		res.add("smaller");
		res.add("smallest");
		res.add("so");
		res.add("some");
		res.add("somebody");
		res.add("somehow");
		res.add("someone");
		res.add("somethan");
		res.add("something");
		res.add("sometime");
		res.add("sometimes");
		res.add("somewhat");
		res.add("somewhere");
		res.add("soon");
		res.add("sorry");
		res.add("specifically");
		res.add("specified");
		res.add("specify");
		res.add("specifying");
		res.add("state");
		res.add("states");
		res.add("still");
		res.add("stop");
		res.add("strongly");
		res.add("sub");
		res.add("substantially");
		res.add("successfully");
		res.add("such");
		res.add("sufficiently");
		res.add("suggest");
		res.add("sup");
		res.add("sure");
		res.add("t");
		res.add("t's");
		res.add("take");
		res.add("taken");
		res.add("taking");
		res.add("tell");
		res.add("tends");
		res.add("th");
		res.add("than");
		res.add("thank");
		res.add("thanks");
		res.add("thanx");
		res.add("that");
		res.add("that'll");
		res.add("that's");
		res.add("that've");
		res.add("thats");
		res.add("the");
		res.add("their");
		res.add("theirs");
		res.add("them");
		res.add("themselves");
		res.add("then");
		res.add("thence");
		res.add("there");
		res.add("there'll");
		res.add("there's");
		res.add("there've");
		res.add("thereafter");
		res.add("thereby");
		res.add("thered");
		res.add("therefore");
		res.add("therein");
		res.add("thereof");
		res.add("therere");
		res.add("theres");
		res.add("thereto");
		res.add("thereupon");
		res.add("these");
		res.add("they");
		res.add("they'd");
		res.add("they'll");
		res.add("they're");
		res.add("they've");
		res.add("theyd");
		res.add("theyre");
		res.add("thing");
		res.add("things");
		res.add("think");
		res.add("thinks");
		res.add("third");
		res.add("this");
		res.add("thorough");
		res.add("thoroughly");
		res.add("those");
		res.add("thou");
		res.add("though");
		res.add("thoughh");
		res.add("thought");
		res.add("thoughts");
		res.add("thousand");
		res.add("three");
		res.add("throug");
		res.add("through");
		res.add("throughout");
		res.add("thru");
		res.add("thus");
		res.add("til");
		res.add("tip");
		res.add("to");
		res.add("today");
		res.add("together");
		res.add("too");
		res.add("took");
		res.add("toward");
		res.add("towards");
		res.add("tried");
		res.add("tries");
		res.add("truly");
		res.add("try");
		res.add("trying");
		res.add("ts");
		res.add("turn");
		res.add("turned");
		res.add("turning");
		res.add("turns");
		res.add("twice");
		res.add("two");
		res.add("u");
		res.add("un");
		res.add("under");
		res.add("unfortunately");
		res.add("unless");
		res.add("unlike");
		res.add("unlikely");
		res.add("until");
		res.add("unto");
		res.add("up");
		res.add("upon");
		res.add("ups");
		res.add("us");
		res.add("use");
		res.add("used");
		res.add("useful");
		res.add("usefully");
		res.add("usefulness");
		res.add("uses");
		res.add("using");
		res.add("usually");
		res.add("uucp");
		res.add("v");
		res.add("value");
		res.add("various");
		res.add("very");
		res.add("via");
		res.add("viz");
		res.add("vol");
		res.add("vols");
		res.add("vs");
		res.add("w");
		res.add("want");
		res.add("wanted");
		res.add("wanting");
		res.add("wants");
		res.add("was");
		res.add("wasn't");
		res.add("way");
		res.add("ways");
		res.add("we");
		res.add("we'd");
		res.add("we'll");
		res.add("we're");
		res.add("we've");
		res.add("wed");
		res.add("welcome");
		res.add("well");
		res.add("wells");
		res.add("went");
		res.add("were");
		res.add("weren't");
		res.add("what");
		res.add("what'll");
		res.add("what's");
		res.add("whatever");
		res.add("whats");
		res.add("when");
		res.add("whence");
		res.add("whenever");
		res.add("where");
		res.add("where's");
		res.add("whereafter");
		res.add("whereas");
		res.add("whereby");
		res.add("wherein");
		res.add("wheres");
		res.add("whereupon");
		res.add("wherever");
		res.add("whether");
		res.add("which");
		res.add("while");
		res.add("whim");
		res.add("whither");
		res.add("who");
		res.add("who'll");
		res.add("who's");
		res.add("whod");
		res.add("whoever");
		res.add("whole");
		res.add("whom");
		res.add("whomever");
		res.add("whos");
		res.add("whose");
		res.add("why");
		res.add("widely");
		res.add("will");
		res.add("willing");
		res.add("wish");
		res.add("with");
		res.add("within");
		res.add("without");
		res.add("won't");
		res.add("wonder");
		res.add("words");
		res.add("work");
		res.add("worked");
		res.add("working");
		res.add("works");
		res.add("world");
		res.add("would");
		res.add("wouldn't");
		res.add("www");
		res.add("x");
		res.add("y");
		res.add("year");
		res.add("years");
		res.add("yes");
		res.add("yet");
		res.add("you");
		res.add("you'd");
		res.add("you'll");
		res.add("you're");
		res.add("you've");
		res.add("youd");
		res.add("young");
		res.add("younger");
		res.add("youngest");
		res.add("your");
		res.add("youre");
		res.add("yours");
		res.add("yourself");
		res.add("yourselves");
		res.add("z");
		res.add("zero");
		res.add("zt");
		res.add("zz");
		return res;
	}
}
